{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 帕累托法则模拟（Python）：\n",
    " #### Step1，随机生成10个产品的销售额\n",
    " #### Step2 ，按照金额从大到小排序\n",
    " #### Step3，绘制帕累托图\n",
    "   条形图、累计销售额占比，计算超过累计超过80%的位置\n",
    " #### Step4，输出重要的产品（影响80%收入的产品）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "# 设置中文字体\n",
    "plt.rcParams['font.sans-serif']=['SimHei']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Step1，随机生成10个产品的销售额"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A     432.762200\n",
       "B    4230.480695\n",
       "C    4403.476632\n",
       "D    4999.237425\n",
       "E    4353.092589\n",
       "F    5075.826244\n",
       "G    5843.356994\n",
       "H    2411.473263\n",
       "I    5559.425451\n",
       "J    4794.719685\n",
       "dtype: float64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#生成10个产品的销售额\n",
    "data=pd.Series(np.random.randn(10)*1500+4000, index = list('ABCDEFGHIJ'))\n",
    "data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Step2 ，按照金额从大到小排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10个商品的销售额：\n",
      " G    5843.356994\n",
      "I    5559.425451\n",
      "F    5075.826244\n",
      "D    4999.237425\n",
      "J    4794.719685\n",
      "C    4403.476632\n",
      "E    4353.092589\n",
      "B    4230.480695\n",
      "H    2411.473263\n",
      "A     432.762200\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# 由大到小排列\n",
    "data.sort_values(ascending=False, inplace=True)\n",
    "print('10个商品的销售额：\\n', data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Step3，绘制帕累托图\n",
    "   条形图、累计销售额占比，计算超过累计超过80%的位置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '营收(元)')"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 柱状图\n",
    "plt.figure(figsize = (16,6))\n",
    "data.plot(kind = 'bar', color = 'g')  \n",
    "plt.ylabel('营收(元)')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "G    0.138784\n",
      "I    0.270825\n",
      "F    0.391380\n",
      "D    0.510116\n",
      "J    0.623994\n",
      "C    0.728580\n",
      "E    0.831970\n",
      "B    0.932447\n",
      "H    0.989722\n",
      "A    1.000000\n",
      "dtype: float64\n",
      "超过80%累计占比的节点值索引为： E\n",
      "超过80%累计占比的节点值索引位置为： 6\n"
     ]
    }
   ],
   "source": [
    "# 计算轴向元素累加和，返回由中间结果组成的数组\n",
    "p = data.cumsum()/data.sum() \n",
    "print(p)\n",
    "# 找到累计占比超过80%时候的index\n",
    "# 找到key所对应的索引位置\n",
    "key = p[p>0.8].index[0]  \n",
    "key_num = data.index.tolist().index(key) \n",
    "print('超过80%累计占比的节点值索引为：' ,key)\n",
    "print('超过80%累计占比的节点值索引位置为：' ,key_num)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9cAAAFjCAYAAAA3s/hjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABK2ElEQVR4nO3dd3xV5eHH8c/DUhIQRAQFDaiAuMCBCojKEHFVUar+FG2tA0e1dVsnrRUHWou4URwVrIpW664WFyo4cIALJ9OKouywQp7fH+cCYQQCyc3J+Lxfr/M6N+eOfHNrQ773ec5zQowRSZIkSZK04WqkHUCSJEmSpMrOci1JkiRJUilZriVJkiRJKiXLtSRJkiRJpWS5liRJkiSplCzXkiRJkiSVUq20A5RWjRo1Yt26ddOOIUmSlIqQuaxqDCHlJJKUHfn5+THGWOEHhit9ua5bty7z589PO4YkSZIkKQtCCAvSzlASFb79S5IkaS1GjEg2SVKqLNeSJEmV2csvJ5skKVVZLdchhDtCCL/K3B4aQng7hHBFkftLdEySJEmSpIosa+U6hLAvsEWM8ZkQwlFAzRhjZ6BZCKF1SY9lK58kSZIkSWUlK+U6hFAbuAeYGEI4AugKPJa5+xWgy3ockyRJkiSpQsvWyPVvgM+AgcBewO+BaZn75gBNgdwSHltNCKFfCOH9EML7BQUFWfkBJEmSJEkqqWxdims3YEiM8YcQwjCgM7DsYtT1SEr9vBIeW02McQgwBCA3Nzdm4weQJEmqFIYMSTuBJInsjVx/DWybud0BaMmKKd7tgYnA2BIekyRJkiSpQsvWyPVQ4L4Qwv8BtUnOpX46hNAMOBjoCERgVAmOSZIkqTgPPZTsTzwx3RySVM1lZeQ6xjg3xnh0jHG/GGOnGOMkkoI9BugWY5wdY5xTkmPZyCdJklRljBqVbJK0FsOHD6dly5bUqFGDli1bMnz48LQjVTnZGrleTYxxJitWAl+vY5IkSZKkDTN8+HD69etHfn4+AJMmTaJfv34A9O3bN81oZSKE0BR4PMa4bzH31waeBBoB98YY78tGjqxd51qSJEmSVL5iXLHe84wZM/jyyy+56KKLlhfrZfLz87n88svLO16ZCyFsCjxIcuWp4pwDvB9j7AwcFkKon40s5TZyLUmSJEnVWWFhIQsXLmTjjTemRo0aTJ8+nalTp5Kfn7/Sduyxx1KrVi1eeukl3njjjeXH58+fz6JFi3jssWSi79VXX82jjz660nPr1KnDzz//DMBZZ53FiBEjis0zefLkcvm5y0CtEML7Rb4ekrmCFMBS4Fjg32t5flfgT5nbb5Msuv1qmYcs6xesKsJfQtoR1lvs71XJJEmqdjbeOO0EUqkNHz6cyy+/nMmTJ5OXl8eAAQPKfbry0qVLWbBgAfn5+WyyySZsvPHGzJgxg08//XS18tu7d2+aNm3Ku+++y8MPP7xS+c3Pz+eee+4hLy+P+++/nz//+c8rPRdg6tSpNG/enLvvvpv+/fuvluXQQw+lYcOGjBw5kptuuonc3FxycnKWb0uXLqVmzZo0btyYHXbYYfnx3Nxc6tdfMSj7+9//nt69e3Puuefy008/rfZ98vLysveGlq2CGGOHNd2RWbeLENba33KBaZnbc4CmZZouw3ItSZJUmQ0enHYCqVRKcj5wQUHB8uKan5/PpptuSqNGjZg7dy5vvPHGSvfl5+dz4IEH0q5dO7799lsGDBiwWjm++uqr6dGjB6+99hpHHXUU+fn5LFq0aHmmF198kV69evHGG2/Qp0+f1TLvtNNONG3alK+//poHHnhgpeKbk5PD4sWLAWjevDndu3df6b7c3Fxyc5MZzMcccwy77rrras9fVpCvvfZarr/++mKL41lnncVZZ51V7Hu7//77A8lU8aLvMUBOTg4DBgwo2f9Ild88oC4wG6iX+brMWa4lSZIkpWLJkiWcf/75xZ4P3K1bN1q2bMmSJUtWuv9vf/sb559/Pt9//z2HHXbYaq9bv3592rVrx7x58/jPf/6zUrHNycmhRo1k6almzZpxwgknrFZu27ZtC0CXLl0YOXLkaiPHjRs3BuD444/n+OOPL/bnO/DAAznwwAOLvb9t27bLv9ea1KxZs9j71seyDynSnh2QorFAF+BxoD3J1anKXCh6wntllJubG+fPn1/mr+u0cEmSVCnce2+yP/XUdHNI67B06VI+//xzRo8eTYMGDTjmmGNYtGgRGxdzakMIgblz5zJgwIDVRn47dOjADjvswMKFCxk/fvxq5blu3bplVkyVvhBCfoxxbQuWEUJ4LcbYNYTQHdgxxnhbkftaAM8D/wU6Ax1jjEvLPKfles0s15IkqVLITJ9lyJC1P05Kyd/+9jdefPFF3nnnHebOnQvAwQcfzPPPPw/AlltuyQ8//LDa81q0aMHEiRPLM6oqqJKU6xK8RjOS0ev/xBhnl02ylTktXJIkSVKpFBQU8OmnnzJ69GhGjx7Njz/+yAsvvADAm2++yYwZMzjhhBPo2LEjnTp1olWrVsufe9NNN1X384FVDmKM3wOPZfN7WK4lSZIkrZeffvqJxo0bE0Jg4MCBXH311SybTbr55pvTuXNnlixZQu3atXniiSeWn+O8Jp4PrKrCci1JkiSpWEuWLGH8+PHLR6XHjBnDN998w5dffknr1q1p06YNv/vd75aPSm+zzTYrrW69tmK9TN++fS3TqvQs15IkSZVZw4ZpJ1AV88MPPzBmzBjat2/PNttswzPPPLP8clRbbLEFnTp14vTTT2eTTTYBoHfv3vTu3TvFxFLF4IJmxXBBM0mSJFUHc+fO5f7772fMmDGMHj16+SJiyy539fPPP/Pyyy/TqVMn8vLyir3mspQtZbGgWXmwXBfDci1JkqSqZtq0actL9Pbbb89pp51Gfn4+DRo0oGnTpnTq1Gn5tttuuxV7mSypPFWWcu20cEmSpMrstsylXM8+O90cqnAKCwuXn+98+umn88ILLzBlyhQANtpoI0477TQgWZl76tSpNG3aNLWsUlVguZYkSarMxo1LO4EqgBgjU6ZMWT4qPXr0aJYsWcLYsWOBZFGyzp0706lTJzp27Miuu+7KRhtttPz5Fmup9CzXkiRJUiWzYMECPvzwQzp16kQIgd///vfceeedAGy88cbsueeedO3alRgjIQTuu+++lBNLVZ/lWpIkSargpk+fzsiRI5ePTH/00UcUFBTw3Xff0bJlS4488kh23HFHOnbsSPv27aldu3bakaVqx3Kt1LhonCRJ0urmz5/P+++/z5gxYzjyyCNp06YNr732Gn379iUnJ4e99tqLiy66iI4dO7L55psD0LNnT3r27Jlycql6s1xLkiRVZp4rWyVMnz6dq6++mtGjRzNu3DiWLl0KQJMmTWjTpg29evXiww8/ZOedd6ZWLf+ElyoiL8VVDEdVs8/3WJIkVTdz587lvffeY/To0YwZM4Zu3bpx/vnnM3fuXPLy8thjjz2WLzq2995707hx47QjS6nzUlySJElSNRZj5Oeff6Zx48bEGNl3330ZPXo0hYWFALRt25Zu3boBUL9+fX7++efll86SVPlYriVJkiqzv/0t2V9wQbo5xOzZs3n33XeXj0qPGTOGli1b8sEHHxBCYJ999uGAAw5YPiq96aabrvR8i7VUuVmuJUmSKrMJE9JOUKUNHz6cyy+/nMmTJ5OXl8eAAQPo27cvhYWFfPHFF3z44Yf07dsXgH79+vHYY48RQmCnnXaiT58+dOnSZflr3XDDDWn9GJLKgedcF8PzgbPP91iSpDLQr1+yHzIk3RxV0PDhw+nXrx/5+fnLj9WuXZvtt9+eKVOmMHv2bACmTp1K8+bNGTNmDHPnzmWvvfaiQYMGacWWqhzPuZYkSZIqscsuu2ylYg2wZMkSJkyYwMknn0zHjh3p1KkTW265JQAdO3ZMI6akCsJyLUmSJBXxySefMHToUCZPnrzG+wsKCrjrrrvKOZWkis5yLUmSVJm1aJF2gipjyZIldO3albfffpvatWuTk5Oz2sg1QF5eXgrpJFV0LkkoSZJUmV1+ebJpvcUYefPNN7nxxhuB5HzqPffck5tvvplp06YxZMgQcnJyVnpOTk4OAwYMSCOupArOkWtJkiRVK9OnT+cf//gHQ4cOZcKECWyyySacdtppNGzYkEGDBi1/3LJVwNe0WrgkrcpyLUmSVJktG0V19LpEnnrqKY4++mgKCgrYZ599+NOf/sTRRx9Nbu6aFyLu27evZVpSiViuJUmSKrNJk9JOUKF988033Hfffey555707t2bzp07c95553HyySfTtm3btONJqkI851qSJElVyoIFCxg2bBjdunWjVatWXH/99bz33nsANGnShIEDB1qsJZU5R64lSZJUpfTq1YtRo0ax7bbbcs0113DSSSfRvHnztGNJquIs15IkSaq0Zs6cyfDhw3nkkUd44YUXqF+/PldccQW1a9dm//33p0YNJ2pKKh+Wa0mSpMps++3TTlDuCgsLefXVVxk6dCj/+te/WLRoEbvtthtTp05lhx124MADD0w7oqRqyHItSZJUmV1wQdoJyk1hYSE1atTgs88+44ADDqBhw4aceuqpnHLKKey2225px5NUzVmuJUmSVGEtXryYZ599lnvvvZcmTZrwwAMPsPPOO/PMM8/Qo0cP6tatm3ZESQJcLVySJKlyu/LKZKtiJkyYwEUXXcRWW21Fnz59GDduHK1bt15+/2GHHWaxllShOHItSZJUmU2fnnaCMjNv3jzq1q1LzZo1uffeexk0aBCHH344p5xyCr169aJmzZppR5SkYjlyLUmSpNTEGBk9ejSnnnoqW265JSNHjgTgwgsvZOrUqTzxxBMccsghFmtJFZ4j15IkSSp3Cxcu5I477mDo0KF89tln5Obmcswxxyy/HnXTpk1TTihJ68dyLUmSpHKxdOlSvvvuO1q1akWtWrW4+eab2Xrrrbnnnns49thjqV+/ftoRJWmDWa4lSZIqs3bt0k6wTt999x333XcfDzzwAEuXLmXy5MnUqlWLcePG0ahRo7TjSVKZsFxLVVz4S0g7wnqJ/WPaESSpcjn77LQTFOutt96if//+jBw5khACvXr14pRTTll+v8VaUlViuZYkSVKZ+fjjj2nUqBFbb701+fn5fPPNN1x99dWcdNJJbL311mnHk6Ssycpq4SGEWiGEySGE1zLbLiGEv4QQ3gsh3FbkcSU6JkmSpGJcfHGypWjWrFnceeeddOjQgV133ZXBgwcD0KNHD7755huuvPJKi7WkKi9bl+JqB/wzxtg1xtgV2AjoAuwFTA0hHBBC6FCSY1nKJ0mSVDXMmpVsKTnjjDNo1qwZZ511FkuWLGHw4MFceumlANSoUYMaNbzyq6TqIVvTwjsCR4YQ9gEmAR8DT8QYYwjhv8CvgNklPPbfVV88hNAP6AdQp06dLP0IklQyle28dvDcdkkb7vvvv+f555/n1FNPBaBWrVr89re/5ZRTTmGPPfYghMr3O1GSykK2yvV7wP4xxv+FEG4H6gITMvfNAZoCBcA3JTi2mhjjEGAIQG5urn8hSpIkZdGSJUt4/vnnGTp0KM8//zxLly6la9eutGrVittu80w+SYLsTQsfF2P8X+b2F8A8koINUC/zfUt6TJIkSSl5//332XrrrenduzfvvfceF110EV9++SWtWrVKO5okVSjZKq8PhRDahxBqAkcCuSTnUgO0ByYCY0t4TJIkScXZa69kKyPz58/nwQcf5F//+hcAbdu2Zb/99uPpp59mypQpXHfddbRu3brMvp8kVRXZmhZ+NfAwEICngWuAUSGEW4CDMtsk4LoSHJMkSVJxMuc+l0aMkffee4+hQ4fyz3/+k7lz59K7d2+OOuoo6tWrx2OPPVYGQSWpasvKyHWM8ZMYY7sY4y4xxstjjIXAAcAo4OAY43clPZaNfJIkSdXW1VdD+/bQtSvssAO0bcuXzZpRe++9aXXffRx11FF8c+aZ/Ou881Z+XufOa3/dK66ADz9c833t2q389Y47rvlxMcL48cntgQMhG6X+l1/g5Zdhxoyyfd3p02HJkrJ9TUmVSrmd0xxjXBBjfDzG+O36HpMkSVIx/vCHZCuhwlq1+Hannbhl8WLyO3WCbt1YeNJJLD3sMM654AIeeOABtv3rXwkXXABffrniieu6Qsv778Ps2SsfKyhI9nXrrny8Xr1kv3Qp3HNPUqoB5s+Hfv3gueeS8tuwYYl/rtXMnAmHHAL77gtnnJEc+9//4NBD4d13oVs3+OmnNT939mw4+GDo2ROOPBIWL06On3JK8iHDNdckX992G3TpkuR+6SWoXXvD80qq9LI1LVySJEnlYeHCEj1s8uTJ3H///dT9+9+ZMns2X26yCb9q3ZptGzem/aGHwjbbwLRpyYM32wyefRaaNFm/LOecAw0arPi6Wzf4619h1ctz1agBn38OZ58NzZvDccclhbtOHXjySXjlFfj5Z2jWbP2+f1EPPQQnnADHHw99+yblf9Ys+PvfoWPHpHx/8AH06rX6c4cPh/PPT8r1mWfCiy8mHxQsXQpvvw1nnQVffQUffQQnngjvvQc5ORueVVKVYLmWJEmq4n766Se23XZbCgsLuWHHHbmyWTM2X7CA8OyzsMsuSZGeNQsuuwwGDYLnn4fCQjj8cHjmGahZE8aNg4MOSo4ffTScdtrq3+jWW5Pp5qtasCAZ4V2wAH73u2QE+cIL4brrVl6MbVlpDSEpw998s+K+jz6CCROg6Rqv1Lq6zTZLHj9rFkyZAnl50KFDct8bbySj11ddtebnnnVW0Tcv+ZDh4YfhmGOSY927w5tvJiPuS5Yko9ZXXFGyXJKqLMu1JElSJTV8+HDCP//J/HnzGPDSSwwYMIC+ffvyySefMHToUGbOnMkDDzzA5ptvzr333kvXrl1pWa9ecj7zd98lRbl586TM7rzzisJ87rmw//4rTznv2jUZwS3qhhuS8g3w6acrj1z37ZuM+kIyLfzNN1c8b9iwZOr3qu69N9nPnp0U+ZdfXjHVevfdV4ykT5yYjLSPH5/kXpMuXZLvMXgwtG0Lm26aHI8RHn00ed2aNdf+Bo8enYxwd+yYTF9v3jw5vskm8PXXcOCBcP/9yYcQhx8Ol1+ejNZLqpa8jrQkSVIlNHz4cPr168e8efOIwKRJkzj55JPZbrvt2GWXXbj99ttZtGgRhYWFAJx00km0bNkyKZZTp8Lrrycl9aOP4J134PrroU8fyM9PvkEISflem8mTkxHoN99MSuj48cntU08t/nzmkrjnnmSq+G9/myzAtnhxUoqXTS9v3jyZVt6mTfGvcdllcNddyeh027ZJCV72c91+e3Lu9LPPFv/8X35JPiy4777k63r1kpF3gHnzkvfm2GPhL39Jzg0/9FB44okN/5klVXqOXEuSKrzwl7DuB1UwsX9MO4KquMsvv5z8/HxGFTm2ePFipkyZws0338wJJ5zA5ptvvvoTt902WYCrfXuoXz85j3j33ZOR3Ro1Vpw7vKw8DhyYjBKvyarnUhdVY5UxnIICePBBmDt35eM//JCMSC97/PjxMGJEUtLPPBP690+KdNFzuUsiPz95rY4dkw8PDjggGWnfckv4zW+S6eLFLZi2eHEyBfy666BFi+TYHnskmTp2hI8/hu23T45/+WVS8mfNWveHEZKqNEeuJUmSKplffvmFSZMmATAssy1TUFDAeeedt+ZivWBBcr7xq68mZXPJEqhVK5nmfMUVyShvQUFSgN96K3lMccV6mUsuSQpn0e2vfy0aKBnh3nPPZCr6b36T5Fi8OCmjp566Yrr5q68mC5A98kgybbt2bbj22uTxeXkrXnPatOQyYkVXM1/VpZcmK483aJCMQh93XPL1Qw/BfvslHyoceCB89tnq50sPHQpjx8KAAcl0+Ecfhd69k+eef35yibBDD4U5c2CLLZJLiw0ZkrxfkqotR64lSZIqgRgjb731FkOGDGHEiBHFPi6vaAldVd260KNHMiI7Zw7ccksy7bplS/jXv5LzpmvVSkaRH3ggWQl7mWVTootatCgZDe7de+XjDzyQLEwGyetdcEHyWsvOme7dO8kRYzKS3qsXfP99MsX6mWeSPJCU7733TlZEv/XWFa/fsuWKy3cVZ6+9kp9nVS+/vPLXO+644tJay5x55orzxYt67bXk+RdfvGIkvWfPZP/RR2vPI6nKC3Fdv5gquNzc3Dh//vwyf12nIGaf73H5qGzvs+9x+ahs77PvsaqzRYsWsdFGGxFjZMcdd+T777/nxBNPpHnz5lxzzTX8PXOO9OlATk4OQ4YMoW/fvumGlqQyFELIjzHmpp1jXRy5liRJqmBijLzxxhsMGTKEkSNH8u2335KTk8MTTzxBixYtyM1N/sbMy8sjnHEG8+fNo0WLFstXC5cklT/LtSRJUgXxyy+/cP/993PPPfcwYcIEGjRowIknnkh+fj45OTnsuOOOKz2+b9++yarfwGlDhqQRWZKUYbmWJElKUYyR+fPnU69ePb799lsuvPBCOnfuzAMPPMDRRx9NzrLVuyVJFZrlWpIkKQU//fQTDz74IPfccw9dunRh6NChdOjQgS+++ILtl13mSZJUaViuJUmSytGbb77Jbbfdxr/+9S+WLFnCPvvsQ89lK07D+hfrIs+VJKXHci1JkpRlP/30E40bNyaEwIgRI3jppZc466yzOO2009hpp51K9+JHH102ISVJpVIj7QCSJElVUWFhISNHjuTYY4+lefPmvJ5ZeKx///5MmzaNQYMGlb5YQ3IN6IULS/86klRJhRCGhhDeDiFcUcz9m4YQng8hjAoh3JWtHJZrSZKkMpSfn88NN9xAmzZtOOCAA/jvf//L2WefTYsWLQBo1KgRdevWLbtv+Ic/JJskVUMhhKOAmjHGzkCzEELrNTzsRGBYjHFfoH4IoUM2sliuJUmSSqmwsJCJEycCUKtWLf7+97/TvHlzhg0bxrRp07j55pvZZptt0g0pSZVXrRDC+0W2fkXu6wo8lrn9CtBlDc//Gdg+hNAQ2BqYnJWQ2XhRSZKk6uCHH35Yfl3qgoICvvvuO+rUqcPnn3/OpptumnY8SaoqCmKMxY025wLTMrfnAK3W8Jg3gUOBPwBfADPLPCGOXEuSJK23sWPH8utf/5qtt96ayy67jBYtWnDDDTcQYwSwWEtS+ZkHLDvXph5r7rjXAmfEGK8mKde/y0YQy7UkSVIJ/O9//+PHH38EYPr06bz++uucd955TJgwgVdffZXjjjuOWrWcFChJ5WwsK6aCtwcmruExOcAuIYSawN5AzEYQy7UkSVIxli5dygsvvMCRRx7J1ltvzaBBgwDo1asXU6dOZeDAgbRp0ybdkL/6VbJJUvX0FHBiCOFm4Bjg0xDCNas85jpgCDAbaAT8MxtB/HhVkiRpDQYOHMgdd9zBpEmT2Hzzzbngggs4+eSTAahZsyY1a9ZMOWGGxVpSNRZjnBNC6Ar0BAbGGH8APl7lMe8CZXDtw7WzXEuSJJGMUo8ePZouXZLZhR999BGtW7fmxhtv5IgjjqBOnTopJyzGrFnJvmHDNFNIUmpijDNZsWJ4aizXkiSpWps6dSr33XcfQ4cOZfLkyXzyySfstNNO/OMf/6gc51BffHGyHzIk3RySVM15zrUkSaqWJk6cyOGHH06LFi3o378/22+/PSNGjKB169YAlaNYS5IqDP/VkCRJAIS/hLQjrJfYf/0Xe50yZQrTp0+nQ4cObLrppnz66adccsklnHLKKWy33XZZSClJqi4s15IkqUorKCjghRdeYMiQITz//PPstttuvP/++zRo0ICvv/6aECrXhwqSpIrJci1Jkqqs+++/nyuvvJJp06axxRZbcOmll3LKKacsv7+8i3U2ZgfcPTbZn/6Xe8r8tTdkdoAkVVeWa0mSVGUUFBTw3HPP0aVLFzbbbDNq1KjBLrvswq233sphhx1G7dq1045Y5h7fMe0EkiRwQTNJklQFTJo0iSuvvJIWLVrQu3dvHnnkEQB++9vf8sILL3DkkUdWyWIN8HKrZJMkpcuRa0mSVGktXryYI488khdeeAGAgw8+mDvvvJNDDjkk5WTlp8m8ZP9jvXRzSFJ1Z7mWJEmVy0xgSnKzTp06NGrUiCuvvJJTTjmFvLy8VKOl4a+vJPvTD083hyRVd5ZrSZJU8S0FJgBjgW+AmjBr1iwaNmzIQw89lG42SZKwXEuSpIruW+AJYD6wCdAV2A0aNmyYYihJklZmuZYkSRVLAckodT2gBbAZsBWwB9AKl2PVWmXjcmfZ5iXPpKrBci1JkiqGn4EPgI9IRqnbkZTrBsBx6cWSJKkkLNeSJCl9/wY+BALQhhWj1FqnYe3STiBJAsu1JElKw88kI9T7AbVJpn03BHYjOa9aJTaqZdoJJElguZYkSdkyDhgJzCaZ2t2N5C+PscB3JKPU2wLbkIxUa4PkzUr2kxummUKSZLmWJEllbxzwDLAk8/Vs4KnM7YZAd5JR6vrlHazqufyNZO91riUpXZZrSZJU9kayolgXlQv8AVf8liRVOZZrSZJUdn4mmfY9u5j752OxliRVSZZrSZJUNkYD/yE5l7oWyfWqV9WgXBNJklRuLNeSJGnDzCS5LnVboDnJ4mTdSM6lnsjK51xDsip4j/KNKElSeclquQ4hNAVejDHuFkIYCuwAPB9jvCZzf4mOSZKkCmIp8CXJ1O+vSUapc0jKddPMBrDs2stFVwvvUeS4ysy9u6edQJIE2R+5vgmoG0I4CqgZY+wcQrgjhNAa2KUkx2KMX2U5oyRJKokIDAGmk6zyvT+wO8VP9W6HZbocvLdV2gkkSZDFch1C6E6ybMkPQFfgscxdrwBdSCaNleTYauU6hNAP6AdQp06drOSXJKnaKyQZnf4COIxkIbK9gbpAG6BmetG0QusZyf6rxunmkKTqLivlOoRQB7gK6E1yVctcYFrm7jlAq/U4tpoY4xCSz87Jzc2NZZ1fkqRqbQ7wIcn51LNJ/nXuAjQiGalWhXLh28ne61xLUrqyNXL9J+D2GOOsEALAPJLPuQHqkXz2XdJjkiSpvEwB7iOZAr4t0AvYHkepJUlah2yV6wOA7iGE3wO7Ankk/1yPAdoDE4CpJJ+Dr+uYJEnKkunTp3PfffexySabJAeaAfuRnCu9WYrBJEmqZLJSrmOM+y27HUJ4DTgcGBVCaAYcDHQk+Uy8JMckSVIZKiws5NVXX+Xuu+/mySefpKCggOOOO27FCHW3tBNKklT5ZH3adYyxa4xxDsmiZmOAbjHG2SU9lu18kiRVN+eccw4HHHAAI0eO5JxzzuHzzz/n4YcfTjuWJEmVWrYvxbVcjHEmK1YCX69jkiRpw8QYGTVqFHfffTd//vOfad26Nb/5zW/o1KkTv/71r9l4443TjqhSum2vtBNIkqAcy7UkSSo/v/zyC//4xz8YMmQIn3/+OQ0aNODoo4+mdevW7L333uy9995pR1QZGb9F2gkkSWC5liSpylm4cCHbbbcds2bNYu+99+a+++7j2GOPJScnJ+1oyoJdfkj2lmxJSpflWpKkSm727Nk89NBDjB07lvvvv5+NN96Yv//97+y22260b98+7XjKsrPfTfZe51qS0mW5liSpEoox8t5773H33Xfzz3/+kwULFrDHHnswd+5c6tevz0knnZR2REmSqhXLtSRJldCjjz7KcccdR25uLieccAKnn346e+yxR9qxJEmqtizXkiRVAh988AF33303HTt25He/+x2HHnood9xxB3379mWTTTZJO54kSdWe5VqSpApq/vz5PPLII9x9992899571K1bl6222gqA+vXrc+aZZ6acUJIkLWO5liSpgurTpw//+c9/2GmnnRg8eDAnnngiDRs2TDuWKpibOqedQJIEUCPtAJIkCRYsWMCDDz7I/vvvz08//QTAFVdcwahRoxg/fjznnHOOxVpr9FXjZJMkpcuRa0mSUvTZZ59x9913849/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\n",
      "text/plain": [
       "<Figure size 1152x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (16,6))\n",
    "data.plot(kind = 'bar', color = 'g')  \n",
    "plt.ylabel('营收(元)')\n",
    "\n",
    "# secondary_y → y副坐标轴\n",
    "# 绘制营收累计占比曲线\n",
    "p.plot(style = '--ko', secondary_y=True)  \n",
    "# 累计占比超过80%的节点\n",
    "# axvline用于画出图形中的竖线\n",
    "plt.axvline(key_num, color='r',linestyle=\"--\",alpha=0.8)  \n",
    "# 在旁边标记出来具体的累计占比\n",
    "plt.text(key_num+0.1, p[key], '累计占比为：%.2f%%' % (p[key]*100), color = 'r')  \n",
    "plt.ylabel('营收(比例)')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Step4，输出重要的产品（影响80%收入的产品）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "A类产品为：\n",
      "G    5843.356994\n",
      "I    5559.425451\n",
      "F    5075.826244\n",
      "D    4999.237425\n",
      "J    4794.719685\n",
      "C    4403.476632\n",
      "E    4353.092589\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# 输出决定性因素产品\n",
    "key_product = data.loc[:key]\n",
    "print('A类产品为：')\n",
    "print(key_product)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
